package cn.xiaopengstack.domain.trade.rule.refund;

import cn.xiaopengstack.domain.trade.model.entity.TradeRefundCommandAggregate;
import cn.xiaopengstack.domain.trade.model.entity.TradeRefundResponseEntity;
import cn.xiaopengstack.domain.trade.model.valobj.RefundTypeEnumVO;

/**
 * @author jiangyangang
 */
public interface IRefundStrategy {

    /**
     * 执行退款
     * @param tradeRefundCommandAggregate
     * @return
     */
    TradeRefundResponseEntity apply(TradeRefundCommandAggregate tradeRefundCommandAggregate) throws Exception;

    /**
     * 退款类型
     * @return
     */
    RefundTypeEnumVO type();
}
